package com.Hsu.mq.common;

import com.Hsu.mq.mqserver.core.BasicProperties;

import java.io.IOException;

/**
 * @author Hsu琛君珩
 * @ClassName:Consumer
 * @date 2024-02-27
 * @apiNote
 * @Version: v1.0
 */

/**
 * 这个只是单纯的函数式接口（回调函数），收到消息之后要处理消息时调用的方法
 * 定义了消息消费者处理消息的接口
 */
@FunctionalInterface
public interface Consumer {
    /**
     * Deliver 投递，这个方法预期是在每次服务器收到消息之后来调用
     * 通过这个额方法把消息推送给对应的消费者
     * @param consumerTag 消费者的身份标识
     * @param basicProperties
     * @param body
     */
    void handleDelivery(String consumerTag, BasicProperties basicProperties, byte[] body) throws MqException, IOException;
}